package com.usb.serial.device;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import static com.usb.serial.device.SerialUtils.ByteArrToHex;

public class ReadActivity extends Activity {

    private EditText readContext;
    private  SerialControl serialControl;
    private Button read;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read);

        readContext = findViewById(R.id.read_context);
        read = findViewById(R.id.read_car);
        read.setOnClickListener(v -> {
            readContext.setText("");
            sMsg.setLength(0);
//            Log.d("xxx", "点击了按钮: ");
//            initRead();
        });

//        initRead();
        initSerialHelper();
//        initSerialHelper();
//        UsbSerialActivity usbSerialActivity = new UsbSerialActivity();
//        usbSerialActivity.initSerialHelper();


    }

    public void initSerialHelper() {

        serialControl = new SerialControl();
        initRead();
    }

    class SerialControl extends SerialHelper {

        @Override
        protected void onDataReceived(final ComBean comBean) {

            runOnUiThread(new Runnable()
            {
                public void run()
                {
                    Log.i(TAG, "DispRecData: ");
                    DispRecData(comBean);
                }
            });

        }



    }



    StringBuilder sMsg;
    private void DispRecData(SerialHelper.ComBean ComRecData){
        if (sMsg == null) {
            sMsg = new StringBuilder();
        }
        byte[] bytes = ComRecData.bytes;
        String byteArrToHex ="";
//        if (txtorandhexshow.isChecked()){
//        static public String Byte2Decimal(Byte inByte) {
//            return Integer.toString(inByte.intValue());
//        }
//        for (byte b : bytes) {
//            byteArrToHex += Byte.toString(b) + "";
//        }
//
//        byteArrToHex = byteArrToHex.replaceAll("-", "");


//        System.out.println(byteArrToHex);

            //16进制
//            byteArrToHex = ByteArrToHex(ComRecData.bytes);
//        }else {
//            //10进制
//            byteArrToHex = new String(bytes.);
//        }
        //    String byteArrToHex = ByteArrToHex(ComRecData.bytes);
        byteArrToHex = ByteArrToHex(ComRecData.bytes);

        String middlePart1 = byteArrToHex.substring(8, byteArrToHex.length() - 8);
        String middlePart2 = byteArrToHex.substring(10, byteArrToHex.length() - 6);
        String middlePart3 = byteArrToHex.substring(12, byteArrToHex.length() - 4);

        String car16 = middlePart3 + middlePart2 + middlePart1;

        long decimalNumber = Long.parseLong(car16, 16);

        Log.d("car", "car: " +decimalNumber);


        Log.i("TAG", "byteArrToHex: "+byteArrToHex);
        sMsg.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        sMsg.append("[");
        sMsg.append("16进制");
        sMsg.append("] ===>>> ");
        sMsg.append(byteArrToHex);
        sMsg.append("\r\n");
        sMsg.append("[");
        sMsg.append("截取后的");
        sMsg.append("] ===>>> ");
        sMsg.append(middlePart3 +middlePart2 +middlePart1);
        sMsg.append("\r\n");
        sMsg.append("[");
        sMsg.append("最终卡号");
        sMsg.append("] ===>>> ");
        sMsg.append(decimalNumber);
        sMsg.append("\r\n");
        readContext.setText(sMsg);
    }

    private void initRead() {


        serialControl.setPort("/dev/ttyUSB0");
        serialControl.setBaudRate("38400");
        File file =new File("/dev/ttyUSB0");
        try {
            serialControl.open();
        } catch (IOException e) {
            e.printStackTrace();
        }
//        boolean b = file.canRead();
//        boolean b1 = file.canWrite();
//        Log.i("x", "onCheckedChanged: "+b +" b1:"+b1);


//        try {
//            //    Os.chmod(serial_spinner_coma.getSelectedItem().toString(), 0666);
//
//        }catch (Exception e){
//            e.printStackTrace();
//        }
        if (!file.canRead() || !file.canWrite()) {
            Toast.makeText(ReadActivity.this,"/dev/ttyUSB0" +"：：无权限",Toast.LENGTH_SHORT).show();
//            serial_toggle_coma.setChecked(false);
            return;
        }
//        try {
//            serialControl.open();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }

    }



//    SerialControl serialControl;
//
//    private void initSerialHelper() {
//        serialControl = new SerialControl();
//    }
//
//    class SerialControl extends SerialHelper {
//
//        @Override
//        protected void onDataReceived(final ComBean comBean) {
//
//            runOnUiThread(new Runnable()
//            {
//                public void run()
//                {
//                    Log.i(TAG, "DispRecData: ");
//                    DispRecData(comBean);
//                }
//            });
//
//        }
//
//    }
//
//    StringBuilder sMsg;
//    private void DispRecData(SerialHelper.ComBean ComRecData){
//        if (sMsg == null) {
//            sMsg = new StringBuilder();
//        }
//        byte[] bytes = ComRecData.bytes;
//        String byteArrToHex ="";
////        if (txtorandhexshow.isChecked()){
////            //16进制
//            byteArrToHex = ByteArrToHex(ComRecData.bytes);
////        }else {
////            //10进制
////            byteArrToHex =   new String(bytes);
////        }
//        //    String byteArrToHex = ByteArrToHex(ComRecData.bytes);
//        Log.i("TAG", "byteArrToHex: "+byteArrToHex);
//        sMsg.append(ComRecData.sRecTime);
//        sMsg.append("[");
//        sMsg.append(" ");
//        sMsg.append(ComRecData.sPort);
//        sMsg.append("]");
//        sMsg.append(byteArrToHex);
//        sMsg.append("\r\n");
//        readContext.setText(sMsg);
//    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        serialControl.close();
    }
}
